//给你一个正整数 n ，生成一个包含 1 到 n² 所有元素，且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 
//
// 
//
// 示例 1： 
// 
// 
//输入：n = 3
//输出：[[1,2,3],[8,9,4],[7,6,5]]
// 
//
// 示例 2： 
//
// 
//输入：n = 1
//输出：[[1]]
// 
//
// 
//
// 提示： 
//
// 
// 1 <= n <= 20 
// 
//
// Related Topics 数组 矩阵 模拟 👍 1075 👎 0


package leetcode.editor.cn;

// [59]螺旋矩阵 II

public class SpiralMatrixIi_59 {
    public static void main(String[] args) {
        Solution solution = new SpiralMatrixIi_59().new Solution();
    }

    //leetcode submit region begin(Prohibit modification and deletion)
    class Solution {
        public int[][] generateMatrix(int n) {
            int[][] ans = new int[n][n];
            int l = 0, r = n - 1, t = 0, b = n - 1;
            int k = 1;
            while (true) {
                for (int i = l; i <= r; i++) {
                    ans[t][i] = k++;
                }
                if (++t > b) {
                    break;
                }
                for (int i = t; i <= b; i++) {
                    ans[i][r] = k++;
                }
                if (--r < l) {
                    break;
                }
                for (int i = r; i >= l; i--) {
                    ans[b][i] = k++;
                }
                if (--b < t) {
                    break;
                }
                for (int i = b; i >= t; i--) {
                    ans[i][l] = k++;
                }
                if (++l > r) {
                    break;
                }
            }
            return ans;
        }
    }
//leetcode submit region end(Prohibit modification and deletion)

}